﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using AutoBackupDatabase.General;
using AutoBackupDatabase.BLL;
using AutoBackupDatabase.ENT;
using AutoBackupDatabase.Form;

namespace AutoBackupDatabase
{
    public partial class Employer_ucc : DevExpress.XtraEditors.XtraUserControl
    {
        private EMPLOYERBLL empBLL;
        List<EMPLOYERENT> listemp;
        private DEPARTMENTBLL departBLL;
        List<DEPARTMENTENT> listDepart;
        public Employer_ucc()
        {
            InitializeComponent();
            empBLL = new EMPLOYERBLL();
            listemp = new List<EMPLOYERENT>();
            departBLL = new DEPARTMENTBLL();
            listDepart = new List<DEPARTMENTENT>();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (!checkRole.CHECKROLE(general.groupUserCode, Role.emp_add))
            {
                MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                return;
            }

            if (btnAdd.Text == "THÊM MỚI")
            {
                general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                txtlastname.Text = "";
                txtFirstName.Text = "";
                txtMiddleName.Text = "";
                txtIDCard.Text = "";
                dtpDateWork.Text = "";
                dtpDOB.Text = "";
                glkDepartment.EditValue = "";
                txtAddress.Text = "";

                txtlastname.Enabled = true;
                txtFirstName.Enabled = true;
                txtMiddleName.Enabled = true;
                txtIDCard.Enabled = true;
                dtpDateWork.Enabled = true;
                dtpDOB.Enabled = true;
                glkDepartment.Enabled = true;
                txtAddress.Enabled = true;
                return;
            }
            else if (btnAdd.Text == "LƯU")
            {
                if (!Validator.IsNull(txtFirstName.Text))
                {
                    MessageBox.Show("Tên không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }
                if (!Validator.IsNull(txtlastname.Text))
                {
                    MessageBox.Show("Họ không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }
                if (!Validator.IsNull(txtMiddleName.Text))
                {
                    MessageBox.Show("Tên lót không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }
                if (!Validator.IsNull(txtIDCard.Text))
                {
                    MessageBox.Show("CMND không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }

                if (listemp.Exists(p => p.IDCARD.Equals(Validator.TrimAll(txtIDCard.Text))))
                {
                    MessageBox.Show("Nhân viên này CMND:[" +txtIDCard.Text + "] đã tồn tại vui lòng nhập tên khác", "Thông báo");
                    return;
                }

                if (glkDepartment.EditValue.ToString() == "")
                {
                    MessageBox.Show("Chọn vực phòng ban");
                    return;
                }




                EMPLOYERENT ent = new EMPLOYERENT();
                ent.ADDRESS = Validator.TrimAll(txtAddress.Text);
                ent.DATEWORK = DateTime.Parse(dtpDateWork.DateTime.ToShortDateString());
                ent.DEPARTMENTID = Validator.TrimAll(glkDepartment.EditValue.ToString());
                ent.DOB = DateTime.Parse(dtpDOB.DateTime.ToShortDateString());
                ent.FIRSTNAME = Validator.TrimAll(txtFirstName.Text);
                ent.IDCARD = Validator.TrimAll(txtIDCard.Text);
                ent.LASTNAME = Validator.TrimAll(txtlastname.Text);
                ent.MIDDLENAME = Validator.TrimAll(txtMiddleName.Text);
                ent.FULLNAME = txtlastname.Text + " " + txtMiddleName.Text + " " + txtFirstName.Text;

                if (empBLL.INSERTEMPLOYER(ent))
                {
                  
                    general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);

                    MessageBox.Show("Thêm mới thành công", "Thông báo");
                    txtlastname.Enabled = false;
                    txtFirstName.Enabled = false;
                    txtMiddleName.Enabled = false;
                    txtIDCard.Enabled = false;
                    dtpDateWork.Enabled = false;
                    dtpDOB.Enabled = false;
                    glkDepartment.Enabled = false;
                    txtAddress.Enabled = false;
                    LoadDataEmployer();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
                }
            }
            else
                MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
        }

        private void LoadDataEmployer()
        {
            listemp = empBLL.GET_EMPLOYER_ALL();
            gridControl1.DataSource = listemp;
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {

                if (!checkRole.CHECKROLE(general.groupUserCode, Role.emp_edit))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnUpdate.Text == "CẬP NHẬT")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtlastname.Enabled = true;
                    txtFirstName.Enabled = true;
                    txtMiddleName.Enabled = true;
                    txtIDCard.Enabled = true;
                    dtpDateWork.Enabled = true;
                    dtpDOB.Enabled = true;
                    glkDepartment.Enabled = true;
                    txtAddress.Enabled = true;
                    return;

                }
                else
                    if (btnUpdate.Text == "HỦY")
                    {
                        general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                        txtlastname.Enabled = false;
                        txtFirstName.Enabled = false;
                        txtMiddleName.Enabled = false;
                        txtIDCard.Enabled = false;
                        dtpDateWork.Enabled = false;
                        dtpDOB.Enabled = false;
                        glkDepartment.Enabled = false;
                        txtAddress.Enabled = false;
                        LoadDataEmployer();
                       
                    }
                    else if (btnUpdate.Text == "LƯU")
                    {

                        if (!Validator.IsNull(txtFirstName.Text))
                        {
                            MessageBox.Show("Tên không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }
                        if (!Validator.IsNull(txtlastname.Text))
                        {
                            MessageBox.Show("Họ không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }
                        if (!Validator.IsNull(txtMiddleName.Text))
                        {
                            MessageBox.Show("Tên lót không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }
                        if (!Validator.IsNull(txtIDCard.Text))
                        {
                            MessageBox.Show("CMND không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }

                        //if (listemp.Exists(p => p.IDCARD.Equals(Validator.TrimAll(txtIDCard.Text))))
                        //{
                        //    MessageBox.Show("Nhân viên này CMND:[" + txtIDCard.Text + "] đã tồn tại vui lòng nhập tên khác", "Thông báo");
                        //    return;
                        //}

                        if (glkDepartment.EditValue.ToString() == "")
                        {
                            MessageBox.Show("Chọn vực phòng ban");
                            return;
                        }


                        EMPLOYERENT ent = new EMPLOYERENT();
                        ent.ADDRESS = Validator.TrimAll(txtAddress.Text);
                        ent.DATEWORK = DateTime.Parse(dtpDateWork.DateTime.ToLongDateString());
                        ent.DEPARTMENTID = Validator.TrimAll(glkDepartment.EditValue.ToString());
                        ent.DOB = DateTime.Parse(dtpDOB.DateTime.ToLongDateString());
                        ent.FIRSTNAME = Validator.TrimAll(txtFirstName.Text);
                        ent.IDCARD = Validator.TrimAll(txtIDCard.Text);
                        ent.LASTNAME = Validator.TrimAll(txtlastname.Text);
                        ent.MIDDLENAME = Validator.TrimAll(txtMiddleName.Text);
                        ent.EMPLOYERID = int.Parse(txtEmployerID.Text);
                        ent.FULLNAME = txtlastname.Text + " " + txtMiddleName.Text + " " + txtFirstName.Text;
                        if (empBLL.UPDATEEMPLOYERBYEMPLOYERID(ent))
                        {
                            MessageBox.Show("Cập nhật thành công", "Thông báo");
                            txtlastname.Enabled = false;
                            txtFirstName.Enabled = false;
                            txtMiddleName.Enabled = false;
                            txtIDCard.Enabled = false;
                            dtpDateWork.Enabled = false;
                            dtpDOB.Enabled = false;
                            glkDepartment.Enabled = false;
                            txtAddress.Enabled = false;
                            LoadDataEmployer();
                            LoadDataEmployer();
                            general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                            
                        }
                    }
                    else
                        MessageBox.Show("Cập nhật thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
            }
            catch (Exception)
            {

                return;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.emp_delete))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }

                if (btnDelete.Text == "HỦY")
                {
                    txtlastname.Enabled = false;
                    txtFirstName.Enabled = false;
                    txtMiddleName.Enabled = false;
                    txtIDCard.Enabled = false;
                    dtpDateWork.Enabled = false;
                    dtpDOB.Enabled = false;
                    glkDepartment.Enabled = false;
                    txtAddress.Enabled = false;
                    LoadDataEmployer();
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);

                }
                else if (btnDelete.Text == "XÓA" && Validator.IsNull(txtEmployerID.Text))
                {
                    if (MessageBox.Show(MessageShow.delConfirmInfo, MessageShow.delConfirmCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        EMPLOYERENT ent = new EMPLOYERENT();
                        ent.EMPLOYERID =int.Parse( txtEmployerID.Text);
                        empBLL.DELTELEEMPLOYERBYEMPLOYERID(ent);
                        LoadDataEmployer();
                        general.ChangeButtonStatus("delete", btnAdd, btnUpdate, btnDelete);
                    }
                }
                else
                    return;
            }
            catch (Exception)
            {

                return;
            }
        }
        DETAILGROUPUSERROLEBLL checkRole = new DETAILGROUPUSERROLEBLL();

        private void Employer_ucc_Load(object sender, EventArgs e)
        {
            try
            {
             

              
              
                LoadDataEmployer();
                LoadDataDepartment();
            }
            catch (Exception)
            {
                    
                
            }
           

        }

        private void LoadDataDepartment()
        {

            listDepart = departBLL.GET_DEPARTMENT_ALL();
             glkDepartment.Properties.DataSource = listDepart;
             glkDepartment.Properties.DisplayMember = "DEPARTMENTNAME";
             glkDepartment.Properties.ValueMember = "DEPARTMENTID";
            
        }

        private void glkDepartment_Properties_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (glkDepartment.Properties.Buttons[1]==e.Button)
            {
                frmDepartment depart = new frmDepartment();
                depart.ShowDialog();
                LoadDataDepartment();
            }
        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            try
            {
                if (e.RowHandle >= 0)
                {
                    EMPLOYERENT emp = (EMPLOYERENT)gridView1.GetFocusedRow();
                    txtAddress.Text = emp.ADDRESS;
                    txtEmployerID.Text = emp.EMPLOYERID.ToString();
                    txtFirstName.Text = emp.FIRSTNAME;
                    txtIDCard.Text = emp.IDCARD;
                    txtlastname.Text = emp.LASTNAME;
                    txtMiddleName.Text = emp.MIDDLENAME;
                    dtpDOB.EditValue = emp.DOB;
                    dtpDateWork.EditValue = emp.DATEWORK;
                    glkDepartment.EditValue = emp.DEPARTMENTID;
                }
            }
            catch (Exception)
            {

                return;
            }
        }

        private void gridControl1_Click(object sender, EventArgs e)
        {

        }

        private void txtAddress_EditValueChanged(object sender, EventArgs e)
        {

        }

    }
}
